package veterinario;

import java.io.Serializable;
import java.util.GregorianCalendar;

/** Classe que define um Animal com uma raça, cor, data de nascimento e identificador único.
 *
 * @author 2011101993 - Hugo Amaro
 * @author 2006130415 - Jorge Martins Alves
 */
public class Animal implements Serializable {
	private String _raca;
	private String _cor;
	private GregorianCalendar _dataNascimento;
	private int _id;

        /** Único construtor desta classe, que recebe 3 parâmetros: raça, cor e data de nascimento.
         * 
         * @param raca  texto com a espécie do animal: gato, cão, vaca, etc.
         * @param cor   texto com a cor do animal: preto, branco com pintas pretas, etc.
         * @param dataNascimento    data de nascimento do animal no formato de acordo com a classe GregorianCalendar.
         */
        public Animal(String raca, String cor, GregorianCalendar dataNascimento){
            this._raca = raca;
            this._cor = cor;
            this._dataNascimento = new GregorianCalendar(dataNascimento.get(GregorianCalendar.YEAR), dataNascimento.get(GregorianCalendar.MONTH), dataNascimento.get(GregorianCalendar.DAY_OF_MONTH));
        }

        /** Método set para definir a raça do animal.
         * 
         * @param aRaca texto com a espécie do animal: gato, cão, vaca, etc.
         */
        public void setRaca(String aRaca) {
		this._raca = aRaca;
	}

        /** Método get que devolve a raça do animal.
         * 
         * @return  texto com a espécie do animal: gato, cão, vaca, etc.
         */
        public String getRaca() {
		return this._raca;
	}

        /** Método set para definir a cor do animal.
         * 
         * @param aCor  texto com a cor do animal: preto, branco com pintas pretas, etc.
         */
        public void setCor(String aCor) {
		this._cor = aCor;
	}

        /** Método get que devolve a cor do animal.
         * 
         * @return  texto com a cor do animal: preto, branco com pintas pretas, etc.
         */
        public String getCor() {
		return this._cor;
	}

        /** Método set para definir a data de nascimento do animal.
         * 
         * @param aDataNascimento   data de nascimento do animal no formato de acordo com a classe GregorianCalendar.
         */
        public void setDataNascimento(GregorianCalendar aDataNascimento) {
		this._dataNascimento = aDataNascimento;
	}

        /** Método get que devolve a data de nascimento do animal.
         * 
         * @return  data de nascimento do animal no formato de acordo com a classe GregorianCalendar.
         */
        public GregorianCalendar getDataNascimento() {
		return this._dataNascimento;
	}

        /** Método set para definir o identificador único do animal.
         * 
         * @param aId   identificador único do animal, um inteiro positivo.
         */
        public void setId(int aId) {
		this._id = aId;
	}

        /** Método get que devolve o identificador único do animal.
         * 
         * @return  identificador único do animal, um inteiro positivo.
         */
        public int getId() {
		return this._id;
	}
        
}